import React, { createContext,useReducer } from 'react';

//导出包含所有数据的容器
export const MusicContext = createContext()

export const allAction ={
    musicPlayAct:'musicPlayAct',//选中歌曲播放
    musicPlayListAct:'musicPlayListAct',//选中列表播放 播放歌单
    isLoadAct:'isLoadAct',//加载完成    
    musicPlaySortAct:'musicPlaySortAct',//播放列表顺序 并重新排列列表
    pageNavIndexAct:'pageNavIndexAct'
}
//初始数据
let initData = {
    isMusicPlayBox:false,//播放组件是否显示
    isMusicPlay:false,//播放开关
    musicPlayData:null,//播放音乐数据
    navIndex:0,//导航下标
    isLoad:true,//默认是否加载
}
//修改数据 
let reducer= (state,action)=>{
    switch(action.type){
        //一定要返回一个新的对象才能重新渲染
        case allAction.musicPlayAct:
            return Object.assign({},state,{isMusicPlay:true,isMusicPlayBox:true,musicPlayData:action.data});
        case allAction.pageNavIndexAct:
            return Object.assign({},state,{navIndex:action.data});
        case allAction.isLoadAct:
            return Object.assign({},state,{isLoad:false});
        default:
            return state
    }
}


export const Music = props=>{
    //初始化函数 附上 初始值
    const [count,dispatch]=useReducer(reducer,initData);
    return (
        <MusicContext.Provider value={{count,dispatch}}>
            {props.children}
        </MusicContext.Provider>
    )
}